from collections import deque

# 时间复杂度为O(n)
n,k=map(int,input().split())
a=list(map(int,input().split()))

q=deque()
ans_min=[]
# 滑动窗口，窗口大小为k
for i in range(n):
    # 维护一个单调递增栈
    while q and a[q[-1]] >= a[i]:
        q.pop()
    q.append(i)
    # 维护窗口大小
    while q and i-q[0]+1>k:
        q.popleft()
    if i+1>=k:
        ans_min.append(a[q[0]])
print(*ans_min)

q.clear()
ans_max=[]
for i in range(n):
    # 维护一个单调递减的栈
    while q and a[q[-1]] <= a[i]:
        q.pop()
    q.append(i)
    # 维护窗口大小 为 k
    while q and i-q[0]+1>k:
        q.popleft()
    if i+1>=k:
        ans_max.append(a[q[0]])
print(*ans_max)